This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.
Try executing this chunk by clicking the Run button within the chunk or by placing your cursor inside it and pressing Ctrl+Shift+Enter.
source("JULES-ES-1p0-common-packages.R")
source("JULES-ES-1p0-common-functions.R")
makeTimeseriesEnsembleSSP <- function(ensloc, variable, nstart, nend, cn = 1850:2100){
ysec <- 31536000
nens <- (nend - nstart) + 1
# nens is number of ensemble members
# nts length of timeseries
# cn is colnames()
datmat <- matrix(NA, nrow = nens, ncol = length(cn))
colnames(datmat) <- cn
enslist <- paste("P", formatC(nstart:nend, width=4, flag="0"), sep="")
for(i in 1:nens){
ensmember <- enslist[i]
fn <- paste0(ensloc,'JULES-ES-1p0_',ensmember,'_Annual_global.nc')
try(nc <- nc_open(paste0(fn)))
#try(localtime <- ncvar_get(nc, 'time'))
# This part compensates for the fact that sometimes years are missing
#try(localyear <- floor(2100 + (localtime / ysec)))
#try(ix <- which(cn%in%localyear))
try(dat <- extractTimeseries(nc, variable))
try(datmat[i, ] <- dat)
nc_close(nc)
}
datmat
}
getStandardMemberSSP <- function(ensloc, variable, nts = 251, cn = 1850:2100){
datmat <- matrix(NA, nrow = 1, ncol = nts)
colnames(datmat) <- cn
ensmember <- 'S3'
#fn <- paste0(ensloc,ensmember,'/stats/','JULES-ES-1p0_',ensmember,'_Annual_global.nc')
fn <- paste0(ensloc,'JULES-ES-1p0_',ensmember,'_Annual_global.nc')
try(nc <- nc_open(paste0(fn)))
try(dat <- extractTimeseries(nc, variable))
datmat[1, ] <- dat
nc_close(nc)
datmat
}
ensloc_ssp585_S3 <- '/data/users/hadaw/JULES_ES_PPE/u-cf932/'
ensloc_ssp585_RAD <- '/data/users/hadaw/JULES_ES_PPE/u-ck647/'
ysec = 60*60*24*365
sspyears <- 1850:2100
if (file.exists("ensemble_timeseries_ssp_2022-08-09.rdata")) {
load("ensemble_timeseries_ssp_2022-08-09.rdata")
} else {
# primary carbon cycle outputs
npp_ens_ssp585_S3 <- makeTimeseriesEnsembleSSP(ensloc = ensloc_ssp585_S3,
nstart = 499, nend = 999, variable = "npp_nlim_lnd_sum", cn = sspyears) / (1e12/ysec)
nbp_ens_ssp585_S3 <- makeTimeseriesEnsembleSSP(ensloc = ensloc_ssp585_S3,
nstart = 499, nend = 999, variable = "nbp_lnd_sum", cn = sspyears) / (1e12/ysec)
cSoil_ens_ssp585_S3 <- makeTimeseriesEnsembleSSP(ensloc = ensloc_ssp585_S3,
nstart = 499, nend = 999, variable = "cSoil_lnd_sum", cn = sspyears) / 1e12
cVeg_ens_ssp585_S3 <- makeTimeseriesEnsembleSSP(ensloc = ensloc_ssp585_S3,
nstart = 499, nend = 999, variable = "cVeg_lnd_sum", cn = sspyears) / 1e12
lai_lnd_mean_ens_ssp585_S3 <- makeTimeseriesEnsembleSSP(ensloc = ensloc_ssp585_S3,
nstart = 499, nend = 999, variable = "lai_lnd_mean", cn = sspyears)
# fluxes
rh_lnd_sum_ens_ssp585_S3 <- makeTimeseriesEnsembleSSP(ensloc = ensloc_ssp585_S3,
nstart = 499, nend = 999, variable = "rh_lnd_sum", cn = sspyears) / (1e12/ysec)
fLuc_lnd_sum_ens_ssp585_S3 <- makeTimeseriesEnsembleSSP(ensloc = ensloc_ssp585_S3,
nstart = 499, nend = 999, variable = "fLuc_lnd_sum", cn = sspyears) / (1e12/ysec)
fHarvest_lnd_sum_ens_ssp585_S3 <- makeTimeseriesEnsembleSSP(ensloc = ensloc_ssp585_S3,
nstart = 499, nend = 999, variable = "fHarvest_lnd_sum", cn = sspyears) / (1e12/ysec)
# fractions
treeFrac_lnd_mean_ens_ssp585_S3 <- makeTimeseriesEnsembleSSP(ensloc = ensloc_ssp585_S3,
nstart = 499, nend = 999, variable = "treeFrac_lnd_mean", cn = sspyears)
shrubFrac_lnd_mean_ens_ssp585_S3 <- makeTimeseriesEnsembleSSP(ensloc = ensloc_ssp585_S3,
nstart = 499, nend = 999, variable = "shrubFrac_lnd_mean", cn = sspyears)
baresoilFrac_lnd_mean_ens_ssp585_S3 <- makeTimeseriesEnsembleSSP(ensloc = ensloc_ssp585_S3,
nstart = 499, nend = 999, variable = "baresoilFrac_lnd_mean", cn = sspyears)
c3PftFrac_lnd_mean_ens_ssp585_S3 <- makeTimeseriesEnsembleSSP(ensloc = ensloc_ssp585_S3,
nstart = 499, nend = 999, variable = "c3PftFrac_lnd_mean", cn = sspyears)
c4PftFrac_lnd_mean_ens_ssp585_S3 <- makeTimeseriesEnsembleSSP(ensloc = ensloc_ssp585_S3,
nstart = 499, nend = 999, variable = "c4PftFrac_lnd_mean", cn = sspyears)
save(npp_ens_ssp585_S3, nbp_ens_ssp585_S3, cSoil_ens_ssp585_S3, cVeg_ens_ssp585_S3, lai_lnd_mean_ens_ssp585_S3, rh_lnd_sum_ens_ssp585_S3, fLuc_lnd_sum_ens_ssp585_S3, fHarvest_lnd_sum_ens_ssp585_S3,
treeFrac_lnd_mean_ens_ssp585_S3, shrubFrac_lnd_mean_ens_ssp585_S3, baresoilFrac_lnd_mean_ens_ssp585_S3,c3PftFrac_lnd_mean_ens_ssp585_S3, c4PftFrac_lnd_mean_ens_ssp585_S3,
file = "ensemble_timeseries_ssp_2022-08-09.rdata" )
}
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: npp_nlim_lnd_sum"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0855_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: cSoil_lnd_sum"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0852_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: cSoil_lnd_sum"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0853_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: cVeg_lnd_sum"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0842_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: cVeg_lnd_sum"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0850_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: cVeg_lnd_sum"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0851_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: lai_lnd_mean"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0828_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: lai_lnd_mean"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0834_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: lai_lnd_mean"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0837_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: lai_lnd_mean"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0838_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: lai_lnd_mean"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0921_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: rh_lnd_sum"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0825_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: rh_lnd_sum"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0827_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: rh_lnd_sum"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0832_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: rh_lnd_sum"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0921_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: fLuc_lnd_sum"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0854_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: fLuc_lnd_sum"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0856_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: fLuc_lnd_sum"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0857_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: fLuc_lnd_sum"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0858_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: fLuc_lnd_sum"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0859_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: fLuc_lnd_sum"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0860_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: fHarvest_lnd_sum"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0840_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: fHarvest_lnd_sum"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0841_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: fHarvest_lnd_sum"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0921_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: treeFrac_lnd_mean"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0921_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: shrubFrac_lnd_mean"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0921_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: baresoilFrac_lnd_mean"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0921_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: c3PftFrac_lnd_mean"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0921_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
[1] "vobjtovarid4: error #F: I could not find the requsted var (or dimvar) in the file!"
[1] "var (or dimvar) name: c4PftFrac_lnd_mean"
[1] "file name: /data/users/hadaw/JULES_ES_PPE/u-cf932/JULES-ES-1p0_P0921_Annual_global.nc"
Error in vobjtovarid4(nc, varid, verbose = verbose, allowdimvar = TRUE) :
Variable not found
## ----------------------------------------------------------------------
## Anomalize ensemble
## ----------------------------------------------------------------------
npp_ens_anom_ssp585_S3 <- anomalizeTSmatrix(npp_ens_ssp585_S3, 1:20)
nbp_ens_anom_ssp585_S3 <- anomalizeTSmatrix(nbp_ens_ssp585_S3, 1:20)
cSoil_ens_anom_ssp585_S3 <- anomalizeTSmatrix(cSoil_ens_ssp585_S3, 1:20)
cVeg_ens_anom_ssp585_S3 <- anomalizeTSmatrix(cVeg_ens_ssp585_S3, 1:20)
rh_lnd_sum_ens_anom_ssp585_S3 <- anomalizeTSmatrix(rh_lnd_sum_ens_ssp585_S3, 1:20)
fLuc_lnd_sum_ens_anom_ssp585_S3 <- anomalizeTSmatrix(fLuc_lnd_sum_ens_ssp585_S3, 1:20)
lai_lnd_mean_ens_anom_ssp585_S3 <- anomalizeTSmatrix(lai_lnd_mean_ens_ssp585_S3, 1:20)
fHarvest_lnd_sum_ens_anom_ssp585_S3 <- anomalizeTSmatrix(fHarvest_lnd_sum_ens_ssp585_S3, 1:20)
treeFrac_lnd_mean_ens_anom_ssp585_S3 <- anomalizeTSmatrix(treeFrac_lnd_mean_ens_ssp585_S3, 1:20)
shrubFrac_lnd_mean_ens_anom_ssp585_S3 <- anomalizeTSmatrix(shrubFrac_lnd_mean_ens_ssp585_S3, 1:20)
baresoilFrac_lnd_mean_ens_anom_ssp585_S3 <- anomalizeTSmatrix(baresoilFrac_lnd_mean_ens_ssp585_S3, 1:20)
c3PftFrac_lnd_mean_ens_anom_ssp585_S3 <- anomalizeTSmatrix(c3PftFrac_lnd_mean_ens_ssp585_S3, 1:20)
c4PftFrac_lnd_mean_ens_anom_ssp585_S3 <- anomalizeTSmatrix(c4PftFrac_lnd_mean_ens_ssp585_S3, 1:20)
#total_land_carbon_anom <- anomalizeTSmatrix(total_land_carbon_ens, 1:20)
transpval <- 30
linecol = 'black'
par(mfrow= c(3,5), las = 1, mar = c(4,4,1,1))
matplot(sspyears, t(npp_ens_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'NPP', xlab = '', ylab = 'GtC')
matplot(sspyears,t(nbp_ens_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'NBP', xlab = '', ylab = 'GtC')
matplot(sspyears,t(cSoil_ens_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'cSoil', xlab = '', ylab = 'GtC')
matplot(sspyears,t(cVeg_ens_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'cVeg', xlab = '', ylab = 'GtC' )
matplot(sspyears,t(rh_lnd_sum_ens_ssp585_S3 ),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'RH', xlab = '', ylab = 'GtC')
matplot(sspyears,t(fLuc_lnd_sum_ens_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'fLuc', xlab = '', ylab = 'GtC')
matplot(sspyears,t(lai_lnd_mean_ens_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'LAI', xlab = '', ylab = 'GtC')
matplot(sspyears,t(fHarvest_lnd_sum_ens_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'fHarvest', xlab = '', ylab = 'GtC')
matplot(sspyears,t(treeFrac_lnd_mean_ens_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'treeFrac', xlab = '', ylab = '%')
matplot(sspyears,t(shrubFrac_lnd_mean_ens_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'shrubFrac', xlab = '', ylab = '%')
matplot(sspyears,t(baresoilFrac_lnd_mean_ens_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'baresoilFrac', xlab = '', ylab = '%')
matplot(sspyears,t(c3PftFrac_lnd_mean_ens_ssp585_S3), type = 'l',
lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'c3PftFrac', xlab = '', ylab = '%')
matplot(sspyears,t(c4PftFrac_lnd_mean_ens_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'c4PftFrac', xlab = '',ylab = '%')
NA
NA
transpval <- 30
linecol = 'black'
par(mfrow= c(3,5), las = 1, mar = c(4,4,1,1))
matplot(sspyears, t(npp_ens_anom_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'NPP', xlab = '', ylab = 'GtC')
matplot(sspyears,t(nbp_ens_anom_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'NBP', xlab = '', ylab = 'GtC')
matplot(sspyears,t(cSoil_ens_anom_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'cSoil', xlab = '', ylab = 'GtC')
matplot(sspyears,t(cVeg_ens_anom_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'cVeg', xlab = '', ylab = 'GtC' )
matplot(sspyears,t(rh_lnd_sum_ens_anom_ssp585_S3 ),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'RH', xlab = '', ylab = 'GtC')
matplot(sspyears,t(fLuc_lnd_sum_ens_anom_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'fLuc', xlab = '', ylab = 'GtC')
matplot(sspyears,t(lai_lnd_mean_ens_anom_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'LAI', xlab = '', ylab = 'GtC')
matplot(sspyears,t(fHarvest_lnd_sum_ens_anom_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'fHarvest', xlab = '', ylab = 'GtC')
matplot(sspyears,t(treeFrac_lnd_mean_ens_anom_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'treeFrac', xlab = '', ylab = '%')
matplot(sspyears,t(shrubFrac_lnd_mean_ens_anom_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'shrubFrac', xlab = '', ylab = '%')
matplot(sspyears,t(baresoilFrac_lnd_mean_ens_anom_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'baresoilFrac', xlab = '', ylab = '%')
matplot(sspyears,t(c3PftFrac_lnd_mean_ens_anom_ssp585_S3), type = 'l',
lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'c3PftFrac', xlab = '', ylab = '%')
matplot(sspyears,t(c4PftFrac_lnd_mean_ens_anom_ssp585_S3),
type = 'l', lty = 'solid', col = makeTransparent(linecol, transpval),
main = 'c4PftFrac', xlab = '',ylab = '%')
NA
NA
Start with Level 2 (Andy’s constraints in NPP, NBP, cSoil and cVeg)
ix_mv <- which(sspyears %in% 1996:2015)
yvec_constraints <- c('npp_ens_ssp585_S3', 'nbp_ens_ssp585_S3', 'cSoil_ens_ssp585_S3', 'cVeg_ens_ssp585_S3')
# Matrix of constraint output modern values (1996 - 2015)
Y_const_ssp585_mv <- matrix(data = NA, nrow = nrow(npp_ens_ssp585_S3), ncol = length(yvec_constraints_vec ))
colnames(Y_const_ssp585_mv) <- yvec_constraints
for(i in 1:length(yvec_constraints)){
Y_trunc <- get(yvec_constraints[i])[, ix_mv]
Y_trunc_mean <- apply(Y_trunc, 1, mean, na.rm = TRUE)
Y_const_ssp585_mv[,i] <- Y_trunc_mean
}
createConstraintString <- function(yvec, mins, maxes){
# This function constructs a logical expression as a string to be evaluated
out <- 'which('
for(i in 1:length(yvec)){
if(i<length(yvec)){
subconst <- paste0('Y_unif','[,', '"',yvec[i],'"',']', '>', mins[i], '&', 'Y_unif','[,', '"',yvec[i], '"',']' , '<', maxes[i], '&')
}
else{
subconst <- paste0('Y_unif','[,', '"',yvec[i],'"',']', '>', mins[i], '&', 'Y_unif','[,', '"',yvec[i], '"',']' , '<', maxes[i])
}
out <- paste0(out, subconst)
}
out <- paste0(out, ')')
}
AW_mins <- c(35, 0, 750, 300)
AW_maxes <- c(80, 10000, 3000, 800)
Y_unif <- Y_const_ssp585_mv
ix_kept <- eval(parse(text = createConstraintString(yvec=yvec_constraints, mins = AW_mins, maxes = AW_maxes)))
#eval(parse(text = paste0()))
inputConstraintSize <- function(Y_unif, yvec, mins, maxes){
# Calculate the indices of Y_unif that are within the bounds set by mins and maxes
ix_kept <- eval(parse(text = createConstraintString(yvec=yvec, mins = mins, maxes = maxes)))
prop_kept <- length(ix_kept) / nrow(Y_unif)
return(list(ix_kept = ix_kept, prop_kept = prop_kept))
}
lcol_wave01 <- makeTransparent('firebrick', 80)
lcol_wave01_level2 <- makeTransparent('gold', 80)
stancol = 'black'
linePlotMultiEns <- function(years, ens1, ens2, col1, col2, ylab, main, ylim = NULL){
# Plot wave00 and wave01 timeseries on top of one another
nt <- length(years)
if(is.null(ylim)){
#ylim = range(c(ens1[,1], ens1[,nt], ens2[,1], ens2[ ,nt]))
ylim = range(c(ens1,ens2))
}
else ylim <- ylim
matplot(years, t(ens1), type = 'l', lty = 'solid',ylim = ylim, col = col1,
ylab = ylab, main = main, xlab = '',
bty = 'n', lwd = 1.5)
matlines(years, t(ens2), col = col2, lty = 'solid', lwd = 1.5)
}
par(mfrow= c(3,5), las = 1, mar = c(4,4,1,0))
linePlotMultiEns(years = sspyears, ens1 = npp_ens_ssp585_S3,
ens2 = npp_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'NPP')
linePlotMultiEns(years = sspyears, ens1 = nbp_ens_ssp585_S3,
ens2 = nbp_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'NBP')
linePlotMultiEns(years = sspyears, ens1 = cSoil_ens_ssp585_S3,
ens2 = cSoil_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'cSoil')
linePlotMultiEns(years = sspyears, ens1 = cVeg_ens_ssp585_S3,
ens2 = cVeg_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'cVeg')
linePlotMultiEns(years = sspyears, ens1 = rh_lnd_sum_ens_ssp585_S3,
ens2 = rh_lnd_sum_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'RH')
linePlotMultiEns(years = sspyears, ens1 = fLuc_lnd_sum_ens_ssp585_S3,
ens2 = fLuc_lnd_sum_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'fLuc')
linePlotMultiEns(years = sspyears, ens1 = lai_lnd_mean_ens_ssp585_S3,
ens2 = lai_lnd_mean_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'LAI')
linePlotMultiEns(years = sspyears, ens1 = fHarvest_lnd_sum_ens_ssp585_S3,
ens2 = fHarvest_lnd_sum_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'fHarvest')
linePlotMultiEns(years = sspyears, ens1 = treeFrac_lnd_mean_ens_ssp585_S3,
ens2 = treeFrac_lnd_mean_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = '%', main = 'treeFrac')
linePlotMultiEns(years = sspyears, ens1 = shrubFrac_lnd_mean_ens_ssp585_S3,
ens2 = shrubFrac_lnd_mean_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = '%', main = 'shrubFrac')
linePlotMultiEns(years = sspyears, ens1 = baresoilFrac_lnd_mean_ens_ssp585_S3,
ens2 = baresoilFrac_lnd_mean_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = '%', main = 'baresoilFrac')
linePlotMultiEns(years = sspyears, ens1 = c3PftFrac_lnd_mean_ens_ssp585_S3,
ens2 = c3PftFrac_lnd_mean_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = '%', main = 'c3PftFrac')
linePlotMultiEns(years = sspyears, ens1 = c4PftFrac_lnd_mean_ens_ssp585_S3,
ens2 = c4PftFrac_lnd_mean_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = '%', main = 'c4PftFrac')
reset()
legend('bottomright', legend = c('wave01', 'wave01 level2'), lty = 'solid', lwd = 1.5, col = c(lcol_wave01, lcol_wave01_level2), inset = c(0.05, 0.15) )
par(mfrow= c(3,5), las = 1, mar = c(4,4,1,0))
linePlotMultiEns(years = sspyears, ens1 = npp_ens_anom_ssp585_S3,
ens2 = npp_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'NPP')
linePlotMultiEns(years = sspyears, ens1 = nbp_ens_anom_ssp585_S3,
ens2 = nbp_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'NBP')
linePlotMultiEns(years = sspyears, ens1 = cSoil_ens_anom_ssp585_S3,
ens2 = cSoil_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'cSoil')
linePlotMultiEns(years = sspyears, ens1 = cVeg_ens_anom_ssp585_S3,
ens2 = cVeg_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'cVeg')
linePlotMultiEns(years = sspyears, ens1 = rh_lnd_sum_ens_anom_ssp585_S3,
ens2 = rh_lnd_sum_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'RH')
linePlotMultiEns(years = sspyears, ens1 = fLuc_lnd_sum_ens_anom_ssp585_S3,
ens2 = fLuc_lnd_sum_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'fLuc')
linePlotMultiEns(years = sspyears, ens1 = lai_lnd_mean_ens_anom_ssp585_S3,
ens2 = lai_lnd_mean_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'LAI')
linePlotMultiEns(years = sspyears, ens1 = fHarvest_lnd_sum_ens_anom_ssp585_S3,
ens2 = fHarvest_lnd_sum_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'fHarvest')
linePlotMultiEns(years = sspyears, ens1 = treeFrac_lnd_mean_ens_anom_ssp585_S3,
ens2 = treeFrac_lnd_mean_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = '%', main = 'treeFrac')
linePlotMultiEns(years = sspyears, ens1 = shrubFrac_lnd_mean_ens_anom_ssp585_S3,
ens2 = shrubFrac_lnd_mean_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = '%', main = 'shrubFrac')
linePlotMultiEns(years = sspyears, ens1 = baresoilFrac_lnd_mean_ens_anom_ssp585_S3,
ens2 = baresoilFrac_lnd_mean_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = '%', main = 'baresoilFrac')
linePlotMultiEns(years = sspyears, ens1 = c3PftFrac_lnd_mean_ens_anom_ssp585_S3,
ens2 = c3PftFrac_lnd_mean_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = '%', main = 'c3PftFrac')
linePlotMultiEns(years = sspyears, ens1 = c4PftFrac_lnd_mean_ens_anom_ssp585_S3,
ens2 = c4PftFrac_lnd_mean_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = '%', main = 'c4PftFrac')
reset()
legend('bottomright', legend = c('wave01', 'wave01 level2'), lty = 'solid', lwd = 2, col = c(lcol_wave01, lcol_wave01_level2), inset = c(0.05, 0.15) )
NA
NA
load('treefrac/global_frac_cci.RData')
frac_cci <- c(global_frac_cci[1] + global_frac_cci[2], global_frac_cci[3], global_frac_cci[4], global_frac_cci[5], global_frac_cci[8] )
#frac_mv <- c(standard_modern_value['treeFrac_lnd_mean'], standard_modern_value['c3PftFrac_lnd_mean'], #standard_modern_value['c4PftFrac_lnd_mean'], standard_modern_value['shrubFrac_lnd_mean'], standard_modern_value['baresoilFrac_lnd_mean'] )
fraclab = c('Trees', 'C3 grasses', 'C4 grasses', 'Shrubs', 'Bare soil')
# Half and double the LC CCI data to get bounds for constraining JULES ES-1.0
frac_cci_max <- frac_cci + (0.5*frac_cci)
frac_cci_min <- frac_cci - (0.5*frac_cci)
ix_mv <- which(sspyears %in% 1996:2015)
yvec_constraints <- c('npp_ens_ssp585_S3', 'nbp_ens_ssp585_S3', 'cSoil_ens_ssp585_S3', 'cVeg_ens_ssp585_S3','baresoilFrac_lnd_mean_ens_ssp585_S3')
# Matrix of constraint output modern values (1996 - 2015)
Y_const_ssp585_mv <- matrix(data = NA, nrow = nrow(npp_ens_ssp585_S3), ncol = length(yvec_constraints))
colnames(Y_const_ssp585_mv) <- yvec_constraints
for(i in 1:length(yvec_constraints)){
Y_trunc <- get(yvec_constraints[i])[, ix_mv]
Y_trunc_mean <- apply(Y_trunc, 1, mean, na.rm = TRUE)
Y_const_ssp585_mv[,i] <- Y_trunc_mean
}
const_mins <- c(35, 0, 750, 300, frac_cci_min['bare soil']*100)
const_maxes <- c(80, 10000, 3000, 800, frac_cci_max['bare soil']*100)
Y_unif <- Y_const_ssp585_mv
ix_kept <- eval(parse(text = createConstraintString(yvec=yvec_constraints, mins = const_mins, maxes = const_maxes)))
lcol_wave01 <- makeTransparent('firebrick', 120)
lcol_wave01_level2 <- makeTransparent('gold', 120)
stancol = 'black'
linePlotMultiEns <- function(years, ens1, ens2, col1, col2, ylab, main, ylim = NULL){
# Plot wave00 and wave01 timeseries on top of one another
nt <- length(years)
if(is.null(ylim)){
#ylim = range(c(ens1[,1], ens1[,nt], ens2[,1], ens2[ ,nt]))
ylim = range(c(ens1,ens2))
}
else ylim <- ylim
matplot(years, t(ens1), type = 'l', lty = 'solid',ylim = ylim, col = col1,
ylab = ylab, main = main, xlab = '',
bty = 'n', lwd = 1.5)
matlines(years, t(ens2), col = col2, lty = 'solid', lwd = 1.5)
}
par(mfrow= c(3,5), las = 1, mar = c(4,4,1,0))
linePlotMultiEns(years = sspyears, ens1 = npp_ens_ssp585_S3,
ens2 = npp_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'NPP')
linePlotMultiEns(years = sspyears, ens1 = nbp_ens_ssp585_S3,
ens2 = nbp_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'NBP')
linePlotMultiEns(years = sspyears, ens1 = cSoil_ens_ssp585_S3,
ens2 = cSoil_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'cSoil')
linePlotMultiEns(years = sspyears, ens1 = cVeg_ens_ssp585_S3,
ens2 = cVeg_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'cVeg')
linePlotMultiEns(years = sspyears, ens1 = rh_lnd_sum_ens_ssp585_S3,
ens2 = rh_lnd_sum_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'RH')
linePlotMultiEns(years = sspyears, ens1 = fLuc_lnd_sum_ens_ssp585_S3,
ens2 = fLuc_lnd_sum_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'fLuc')
linePlotMultiEns(years = sspyears, ens1 = lai_lnd_mean_ens_ssp585_S3,
ens2 = lai_lnd_mean_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'LAI')
linePlotMultiEns(years = sspyears, ens1 = fHarvest_lnd_sum_ens_ssp585_S3,
ens2 = fHarvest_lnd_sum_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'fHarvest')
linePlotMultiEns(years = sspyears, ens1 = treeFrac_lnd_mean_ens_ssp585_S3,
ens2 = treeFrac_lnd_mean_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = '%', main = 'treeFrac')
linePlotMultiEns(years = sspyears, ens1 = shrubFrac_lnd_mean_ens_ssp585_S3,
ens2 = shrubFrac_lnd_mean_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = '%', main = 'shrubFrac')
linePlotMultiEns(years = sspyears, ens1 = baresoilFrac_lnd_mean_ens_ssp585_S3,
ens2 = baresoilFrac_lnd_mean_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = '%', main = 'baresoilFrac')
linePlotMultiEns(years = sspyears, ens1 = c3PftFrac_lnd_mean_ens_ssp585_S3,
ens2 = c3PftFrac_lnd_mean_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = '%', main = 'c3PftFrac')
linePlotMultiEns(years = sspyears, ens1 = c4PftFrac_lnd_mean_ens_ssp585_S3,
ens2 = c4PftFrac_lnd_mean_ens_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = '%', main = 'c4PftFrac')
reset()
legend('bottomright', legend = c('wave01', 'wave01 level2'), lty = 'solid', lwd = 2, col = c(lcol_wave01, lcol_wave01_level2), inset = c(0.05, 0.15) )
par(mfrow= c(3,5), las = 1, mar = c(4,4,1,0))
linePlotMultiEns(years = sspyears, ens1 = npp_ens_anom_ssp585_S3,
ens2 = npp_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'NPP')
linePlotMultiEns(years = sspyears, ens1 = nbp_ens_anom_ssp585_S3,
ens2 = nbp_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'NBP')
linePlotMultiEns(years = sspyears, ens1 = cSoil_ens_anom_ssp585_S3,
ens2 = cSoil_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'cSoil')
linePlotMultiEns(years = sspyears, ens1 = cVeg_ens_anom_ssp585_S3,
ens2 = cVeg_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'cVeg')
linePlotMultiEns(years = sspyears, ens1 = rh_lnd_sum_ens_anom_ssp585_S3,
ens2 = rh_lnd_sum_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'RH')
linePlotMultiEns(years = sspyears, ens1 = fLuc_lnd_sum_ens_anom_ssp585_S3,
ens2 = fLuc_lnd_sum_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'fLuc')
linePlotMultiEns(years = sspyears, ens1 = lai_lnd_mean_ens_anom_ssp585_S3,
ens2 = lai_lnd_mean_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'LAI')
linePlotMultiEns(years = sspyears, ens1 = fHarvest_lnd_sum_ens_anom_ssp585_S3,
ens2 = fHarvest_lnd_sum_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = 'GtC', main = 'fHarvest')
linePlotMultiEns(years = sspyears, ens1 = treeFrac_lnd_mean_ens_anom_ssp585_S3,
ens2 = treeFrac_lnd_mean_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = '%', main = 'treeFrac')
linePlotMultiEns(years = sspyears, ens1 = shrubFrac_lnd_mean_ens_anom_ssp585_S3,
ens2 = shrubFrac_lnd_mean_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = '%', main = 'shrubFrac')
linePlotMultiEns(years = sspyears, ens1 = baresoilFrac_lnd_mean_ens_anom_ssp585_S3,
ens2 = baresoilFrac_lnd_mean_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = '%', main = 'baresoilFrac')
linePlotMultiEns(years = sspyears, ens1 = c3PftFrac_lnd_mean_ens_anom_ssp585_S3,
ens2 = c3PftFrac_lnd_mean_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = '%', main = 'c3PftFrac')
linePlotMultiEns(years = sspyears, ens1 = c4PftFrac_lnd_mean_ens_anom_ssp585_S3,
ens2 = c4PftFrac_lnd_mean_ens_anom_ssp585_S3[ix_kept, ],
col1 = lcol_wave01, col2 = lcol_wave01_level2,
ylab = '%', main = 'c4PftFrac')
reset()
legend('bottomright', legend = c('wave01', 'wave01 level2'), lty = 'solid', lwd = 2, col = c(lcol_wave01, lcol_wave01_level2), inset = c(0.05, 0.15) )
NA
NA
Add a new chunk by clicking the Insert Chunk button on the toolbar or by pressing Ctrl+Alt+I.
When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the Preview button or press Ctrl+Shift+K to preview the HTML file).
The preview shows you a rendered HTML copy of the contents of the editor. Consequently, unlike Knit, Preview does not run any R code chunks. Instead, the output of the chunk when it was last run in the editor is displayed.